Skip to content

feat(checks): Improve GitHub output and check summary#38

Merged
dcramer merged 4 commits intomainfrom
improve-github-output
Jan 30, 2026
Merged

feat(checks): Improve GitHub output and check summary#38
dcramer merged 4 commits intomainfrom
improve-github-output

Conversation

@dcramer
Copy link
Member

@dcramer dcramer commented Jan 30, 2026

Improves GitHub output based on feedback in #36.

Changes

1. Remove standalone PR summary comments

Only post PR reviews with inline comments - skip standalone summary comments
that add noise without providing actionable inline feedback.

2. Track skill duration

Add durationMs tracking to runSkill() so the duration column shows values.

3. Redesign check summaries for actionability

  • Shows up to 10 findings grouped by severity (Critical, High, etc.)
  • Each finding is collapsible: title visible, description expands on click
  • Removed emojis
  • Simplified check titles: "X issues" or "No issues"
  • Skills table in collapsible section, removed redundant Result column
  • Readable stats footer

Example output

### Critical

<details>
<summary><strong>SQL injection vulnerability</strong> - `src/api/users.ts:45`</summary>

User input passed directly to query without sanitization

</details>

### High

<details>
<summary><strong>Missing auth check</strong> - `src/api/admin.ts:23`</summary>

Endpoint accessible without authentication

</details>

<details>
<summary>2 skills analyzed</summary>

| Skill | Findings | Duration | Cost |
|-------|----------|----------|------|
| security-review | 1 | 8.2s | $0.004 |
| code-style | 1 | 4.1s | $0.002 |

</details>

---
**Duration:** 12.3s · **Tokens:** 5.2k in / 1.2k out · **Cost:** $0.006

Fixes #36

Only post PR reviews with inline comments, skip standalone summary
comments that add noise without providing actionable inline feedback.
The GitHub check annotations already provide the summary information.

Fixes GH-36
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@vercel
Copy link

vercel bot commented Jan 30, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
warden Ready Ready Preview, Comment Jan 30, 2026 1:21am

Request Review

Add timing to runSkill so the duration is included in the report.
This fixes the '-' appearing in the Duration column of the Skills
table in the GitHub check summary.

Fixes GH-36
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Redesign the core warden check summary to be more useful:

- Lead with actionable headline showing issue count by severity
- Display top 5 findings directly with title, location, description
- Move skills table into collapsible details section
- Use readable stats footer with labeled inline format

The new design answers "what should I do?" instead of just "what happened?"

Fixes GH-36
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@dcramer dcramer changed the title ref(action): Remove standalone PR summary comments feat(checks): Improve GitHub output and check summary Jan 30, 2026
@dcramer dcramer marked this pull request as ready for review January 30, 2026 01:18
- Remove emojis from all output
- Show findings with collapsible details (title visible, description hidden)
- Remove useless "X findings across Y skills" header
- Simplify check titles to just "X issues" or "No issues"
- Show actual findings in skill check summary, not just severity table
- Remove redundant Result column from skills table

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 4 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

lines.push(`*...and ${remaining} more*`, '');
}
} else {
lines.push('No issues found.', '');
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing actionable headline in core check summary

Medium Severity

The buildCoreSummary function doesn't add the actionable headline described in the PR. The PR documentation states the summary leads with "🔴 X issues require attention" or "✅ No issues found", but the implementation starts directly with severity sections (### High) or just "No issues found." without the expected headline with emoji and issue count.

Fix in Cursor Fix in Web

}

/** Maximum findings to show in the summary */
const MAX_SUMMARY_FINDINGS = 10;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary shows 10 findings instead of documented 5

Low Severity

The MAX_SUMMARY_FINDINGS constant is set to 10, but the PR description explicitly states the summary "Shows top 5 findings directly with title, location, and description." This mismatch means the implementation displays twice as many findings as the documented design intended, potentially reducing the actionability the redesign aims to achieve.

Fix in Cursor Fix in Web


// Add aggregate stats line if available
const hasStats = data.totalDurationMs !== undefined || data.totalUsage;
if (hasStats) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate formatLocation function reimplements existing utility

Low Severity

The new formatLocation function duplicates the core logic of the existing formatLocation in src/cli/output/formatters.ts. Both format path:startLine-endLine the same way. The only difference is the new version takes an object parameter and wraps output in backticks. This could reuse the existing utility by calling it and wrapping the result, rather than reimplementing the line-range formatting logic.

Fix in Cursor Fix in Web

lines.push(finding.description, '');
lines.push('</details>', '');
}
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Findings-by-severity rendering logic duplicated across functions

Low Severity

The logic for sorting findings by severity, grouping them into a Map, iterating over severityOrder, capitalizing labels, and rendering each finding with <details> tags is nearly identical in both buildSkillSummary and buildCoreSummary. This ~25-line block is duplicated, including the same hardcoded severityOrder array. A helper function to render findings grouped by severity would eliminate this duplication.

Additional Locations (1)

Fix in Cursor Fix in Web

@dcramer dcramer merged commit e6a86fc into main Jan 30, 2026
13 checks passed
@dcramer dcramer deleted the improve-github-output branch January 30, 2026 05:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Improve GitHub output

1 participant